package net.cyndeline.GUI

import net.cyndeline.entitySystem.EntityRef
import net.cyndeline.events.movement.MovementEvent

/**
 * This is the only piece of the game logic that the UI has access to,
 * and can be used to send messages to the player entity, in order to
 * issue commands to it. This trait doesn't expose any methods needed to
 * examine the result of the event. Any event sent when the player isn't
 * allowed to perform inputs is simply discarded.
 */
trait PlayerGUIContainer {
  
  /** 
   * Send a movement command on behalf of the player entity.
   * 
   * @param x The number of coordinates to adjust the players position
   * 		  with along the x axis (negative values represents leftward
   *     	  movement.
   * @param y Same as x, along the y axis. Negative values are downwards 
   * 		  movement.  
   */
  def move(x: Int, y: Int): Boolean
  
  //TODO Fill in spell casting and slot manipulation.
  
}